const express = require("express");
const app = express();

const cors = require("cors");
app.use(cors()); // 使用 CORS 中间件，允许所有跨域请求

//配置解析post参数的中间件--不用下载第三方body-parser，内置
app.use(express.urlencoded({ extended: true })); //解析post参数-username=chujian&password=123456这种格式的
app.use(express.json()); //解析post参数-{username:"chujian",password:123456}这种格式的

const session = require("express-session");
app.use(
  session({
    secret: "shaodongliang", // 用于加密session ID的字符串，生产环境中应使用更复杂的字符串
    resave: false, // 强制将session存储在session store中，即使它没有发生变化
    saveUninitialized: true, // 强制将未初始化的session存储在session store中
    cookie: {
      secure: false, // // 如果设置为true，则cookie仅在使用HTTPS连接时发送
      maxAge: 1000 * 60 * 10, // session的有效期，单位为毫秒
    },
  })
);
const path = require("path");
//设置静态资源
app.use("/static", express.static(path.join(__dirname, "public")));
const routes = require("./routes"); //引入路由
app.use("/", routes); //新增
const port = 3001;

// 加载用于解析 cookie 的中间件
var cookieParser = require("cookie-parser");
app.use(cookieParser());

const morgan = require("morgan"); //日志中间件
app.use(morgan("combined")); // 使用 morgan 中间件记录请求日志

// 定制 404 页面
app.use(function (req, res) {
  res.type("text/plain");
  res.status(404);
  res.send("404 - Not Found");
});
// 定制 500 页面
app.use(function (err, req, res, next) {
  console.error(err.stack);
  res.type("text/plain");
  res.status(500);
  res.send("500 - Server Error");
});
app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});
